package com.fm.service.impl;

import com.fm.common.Const;
import com.fm.common.ResultResponse;
import com.fm.dao.UserMapper;
import com.fm.pojo.User;
import com.fm.service.IUserService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service("userService")
public class UserServiceImpl implements IUserService {

    @Autowired
    private UserMapper userMapper;

    public ResultResponse<String> register(User user){
        ResultResponse validResponse = this.checkValid(user.getUsername(),Const.USERNAME);
        if(!validResponse.isSuccessStatus()){
            return validResponse;
        }
        validResponse = this.checkValid(user.getPhone(),Const.PHONE);
        if(!validResponse.isSuccessStatus()){
            return validResponse;
        }
        if (user.getRole()==Const.Role.ROLE_ADMIN||user.getRole()==Const.Role.ROLE_SUPERADMIN){
            return ResultResponse.isErrorMessage("不能成为该角色");
        }
        //MD5加密
        //user.setPassword(MD5Util.MD5EncodeUtf8(user.getPassword()));
        int resultCount = userMapper.insert(user);
        if(resultCount == 0){
            return ResultResponse.isErrorMessage("注册失败");
        }
        return ResultResponse.isSuccessMessage("注册成功");
    }

    public ResultResponse<PageInfo> userList(int pageNum,int pageSize){
        PageHelper.startPage(pageNum,pageSize);
        List<User> list = userMapper.selectCustomer();
        PageInfo pageInfo = new PageInfo(list);
        return ResultResponse.isSuccess(pageInfo);
    }

    //用户校验
    public ResultResponse<String> checkValid(String str,String type){
        if(org.apache.commons.lang3.StringUtils.isNotBlank(type)){
            //开始校验
            if(Const.USERNAME.equals(type)){
                int resultCount = userMapper.checkUsername(str);
                if(resultCount > 0 ){
                    return ResultResponse.isErrorMessage("用户名已存在");
                }
            }
            if(Const.PHONE.equals(type)){
                int resultCount = userMapper.checkPhone(str);
                if(resultCount > 0 ){
                    return ResultResponse.isErrorMessage("手机号码已存在");
                }
            }
        }else{
            return ResultResponse.isErrorMessage("参数错误");
        }
        return ResultResponse.isSuccessMessage("校验成功");
    }


    //backend
    public ResultResponse checkAdmin(User user){
        if(user != null && user.getRole().intValue() == Const.Role.ROLE_ADMIN){
            return ResultResponse.isSuccess();
        }
        return ResultResponse.isError();
    }

    public ResultResponse checkSuperAdmin(User user){
        if(user != null && user.getRole().intValue() == Const.Role.ROLE_SUPERADMIN){
            return ResultResponse.isSuccess();
        }
        return ResultResponse.isError();
    }

    public ResultResponse checkCompany(User user){
        if(user != null && user.getRole().intValue() == Const.Role.ROLE_COMPANY){
            return ResultResponse.isSuccess();
        }
        return ResultResponse.isError();
    }

    public ResultResponse checkPersonal(User user){
        if(user != null && user.getRole().intValue() == Const.Role.ROLE_PERSONAL){
            return ResultResponse.isSuccess();
        }
        return ResultResponse.isError();
    }

    public ResultResponse checkCustomer(User user){
        if(user != null && user.getRole().intValue() == Const.Role.ROLE_CUSTOMER){
            return ResultResponse.isSuccess();
        }
        return ResultResponse.isError();
    }
}
